设置default env

ENV分区在读写过程中如果突然断电,有极小的概率会出现数据损坏,导致ENV丢失,一但数据丢失系统会启动失败。为保证系统的正常启动,当ENV分区数据CRC校验失败时自动从default值启动。由于每个用户分区的设置不同,请按照以下两步在相应地方配置默认值。

以下log代表ENV CRC 校验失败:

*** warning - bad CRC, using default environment

这里以NAND flash举例(*NOR flash直接跳到第二步即可)

  1. 设置default mtdpart:(分区信息)

    需修改文件boot/include/configs/infinity2m.h中对应的宏定义MTDPARTS_DEFAULT。

    注意: 这里的mtdpart跟uboot下输入mtdpart后的保持一致。

    Eg:uboot下输入mtdpart

    boot/include/configs/infinity2m.h中有多个MTDPARTS_DEFAULT宏变量,不想区分的话将MTDPARTS_DEFAULT设置为相同的值。

  2. 在Uboot下设置Default Bootargs跟bootcommand

    目前版本中,在Uboot/include/configs/infinity2m.h文件末尾有两个宏定义。

    Eg:在uboot输入printenv bootargs/printenv bootcmd

    将图中bootargs和bootcmd的值填到下图对应的CONFIG_BOOTARGS/CONFIG_BOOTCOMMAND。

1. 在Uboot 设置自定义Default ENV

修改文件:`boot\include\env_default.h`

default\_environment[]数组中参照其它ENV添加默认ENV(\*以上设置的bootargs跟bootcmd最终会定义到此数组)。

![](media/defaultenv5.png)

![](media/defaultenv6.png)

`boot/include/configs/infinity2m.h`设置了系统启动必须的default env之后,重新编译uboot并更新到板端,保证env数据丢失时可以系统正常启动